package com.jixiang.tracedata.model.traveller;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

import java.io.Serializable;
import java.util.List;

/**
 * @author quanbiao
 * @date 2018-08-31
 * 航段信息
 */
@XStreamAlias("Segment")
public class Segment implements Serializable {

    private static final long serialVersionUID = 4787056445985577373L;

    /**
     * PNR 航段行动代码
     */
    @XStreamAsAttribute()
    private String ActionCode;

    /**
     * 客票CouponStatus
     */
    @XStreamAsAttribute()
    private String CouponStatus;

    /**
     * 航段有效期起始时间
     */
    @XStreamAsAttribute()
    private String NotValidBefore;

    /***
     * 航段有效期终止时间
     */
    @XStreamAsAttribute()
    private String NotValidAfter;

    /**
     * 客票CouponNumber
     */
    @XStreamAsAttribute()
    private String CouponNumber;

    /**
     * EMD CouponStatus
     */
    @XStreamAsAttribute()
    private String EMDCouponStatus;

    /**
     * "自愿改期标识：
     1. IRR：非自愿改期
     2. INV：非自愿后的自愿改期，由IRR->INV"
     */
    @XStreamAsAttribute()
    private String InvoluntaryIndicator;

    /**
     * "行李限额，从客票取得，取值取决于航空公司设定，常见的有：
     1. 限定总量：例如20K
     2. 限定件数：例如2P"
     */
    @XStreamAsAttribute()
    private String BaggageAllowance;

    /**
     * 市场航班
     */
    @XStreamAlias("Carrier")
    private Carrier Carrier;

    /**
     * 承运航班
     */
    @XStreamAlias("OperatingCarrier")
    private OperatingCarrier OperatingCarrier;

    /**
     * 离港信息
     */
    @XStreamAlias("Departure")
    private Departure Departure;

    /**
     *到港信息
     */
    @XStreamAlias("Arrival")
    private Arrival Arrival;

    /**
     *舱位信息
     */
    @XStreamAlias("Cabin")
    private Cabin Cabin;

    /**
     *特殊服务信息
     */
    @XStreamImplicit(itemFieldName="SpecialServiceRequest")
    private List<SpecialServiceRequest> SpecialServiceRequestList;

    /**
     * PNR 中RMK信息
     */
    @XStreamImplicit(itemFieldName="GeneralRemark")
    private List<GeneralRemark> GeneralRemarkList;

    /**
     *OtherServiceInformation
     */
    @XStreamImplicit(itemFieldName="OtherServiceInformation")
    private List<OtherServiceInformation> OtherServiceInformationList;

    /**
     *FrequentTraveler
     */
    @XStreamImplicit(itemFieldName="FrequentTraveler")
    private List<FrequentTraveler> FrequentTravelerList;

    /**
     * 手机
     */
    @XStreamImplicit(itemFieldName="Phone")
    private List<Phone> PhoneList;

    /**
     * 电子邮件地址
     */
    @XStreamImplicit(itemFieldName="Email")
    private List<String> EmailList;

    /**
     *联系组
     */
    @XStreamImplicit(itemFieldName="Contact")
    private List<Contact> ContactList;


    public String getActionCode() {
        return ActionCode;
    }

    public void setActionCode(String actionCode) {
        ActionCode = actionCode;
    }

    public String getCouponStatus() {
        return CouponStatus;
    }

    public void setCouponStatus(String couponStatus) {
        CouponStatus = couponStatus;
    }

    public String getNotValidBefore() {
        return NotValidBefore;
    }

    public void setNotValidBefore(String notValidBefore) {
        NotValidBefore = notValidBefore;
    }

    public String getNotValidAfter() {
        return NotValidAfter;
    }

    public void setNotValidAfter(String notValidAfter) {
        NotValidAfter = notValidAfter;
    }

    public String getCouponNumber() {
        return CouponNumber;
    }

    public void setCouponNumber(String couponNumber) {
        CouponNumber = couponNumber;
    }

    public String getEMDCouponStatus() {
        return EMDCouponStatus;
    }

    public void setEMDCouponStatus(String EMDCouponStatus) {
        this.EMDCouponStatus = EMDCouponStatus;
    }

    public String getInvoluntaryIndicator() {
        return InvoluntaryIndicator;
    }

    public void setInvoluntaryIndicator(String involuntaryIndicator) {
        InvoluntaryIndicator = involuntaryIndicator;
    }

    public String getBaggageAllowance() {
        return BaggageAllowance;
    }

    public void setBaggageAllowance(String baggageAllowance) {
        BaggageAllowance = baggageAllowance;
    }

    public Carrier getCarrier() {
        return Carrier;
    }

    public void setCarrier(Carrier carrier) {
        Carrier = carrier;
    }

    public OperatingCarrier getOperatingCarrier() {
        return OperatingCarrier;
    }

    public void setOperatingCarrier(OperatingCarrier operatingCarrier) {
        OperatingCarrier = operatingCarrier;
    }

    public Departure getDeparture() {
        return Departure;
    }

    public void setDeparture(Departure departure) {
        Departure = departure;
    }

    public Arrival getArrival() {
        return Arrival;
    }

    public void setArrival(Arrival arrival) {
        Arrival = arrival;
    }

    public Cabin getCabin() {
        return Cabin;
    }

    public void setCabin(Cabin cabin) {
        Cabin = cabin;
    }

    public List<SpecialServiceRequest> getSpecialServiceRequestList() {
        return SpecialServiceRequestList;
    }

    public void setSpecialServiceRequestList(List<SpecialServiceRequest> specialServiceRequestList) {
        SpecialServiceRequestList = specialServiceRequestList;
    }

    public List<GeneralRemark> getGeneralRemarkList() {
        return GeneralRemarkList;
    }

    public void setGeneralRemarkList(List<GeneralRemark> generalRemarkList) {
        GeneralRemarkList = generalRemarkList;
    }

    public List<OtherServiceInformation> getOtherServiceInformationList() {
        return OtherServiceInformationList;
    }

    public void setOtherServiceInformationList(List<OtherServiceInformation> otherServiceInformationList) {
        OtherServiceInformationList = otherServiceInformationList;
    }

    public List<FrequentTraveler> getFrequentTravelerList() {
        return FrequentTravelerList;
    }

    public void setFrequentTravelerList(List<FrequentTraveler> frequentTravelerList) {
        FrequentTravelerList = frequentTravelerList;
    }

    public List<Phone> getPhoneList() {
        return PhoneList;
    }

    public void setPhoneList(List<Phone> phoneList) {
        PhoneList = phoneList;
    }

    public List<String> getEmailList() {
        return EmailList;
    }

    public void setEmailList(List<String> emailList) {
        EmailList = emailList;
    }

    public List<Contact> getContactList() {
        return ContactList;
    }

    public void setContactList(List<Contact> contactList) {
        ContactList = contactList;
    }
}
